using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._NetworkDiagramTools
{
    /// <summary>
    /// <para>Alter Diagram Properties</para>
    /// <para>Alters properties for a stored network diagram.</para>
    /// <para>更改存储的网络逻辑示意图的属性。</para>
    /// </summary>    
    [DisplayName("Alter Diagram Properties")]
    public class AlterDiagramProperties : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public AlterDiagramProperties()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_network_diagram_layer">
        /// <para>Input Network Diagram Layer</para>
        /// <para>The stored network diagram to alter.</para>
        /// <para>要更改的存储网络逻辑示意图。</para>
        /// </param>
        public AlterDiagramProperties(object _in_network_diagram_layer)
        {
            this._in_network_diagram_layer = _in_network_diagram_layer;
        }
        public override string ToolboxName => "Network Diagram Tools";

        public override string ToolName => "Alter Diagram Properties";

        public override string CallName => "nd.AlterDiagramProperties";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_network_diagram_layer, _out_name, _access_right_type.GetGPValue(), _tags, _out_network_diagram_layer];

        /// <summary>
        /// <para>Input Network Diagram Layer</para>
        /// <para>The stored network diagram to alter.</para>
        /// <para>要更改的存储网络逻辑示意图。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Network Diagram Layer")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_network_diagram_layer { get; set; }


        /// <summary>
        /// <para>Network Diagram Name</para>
        /// <para>The new name for the input network diagram.</para>
        /// <para>输入网络逻辑示意图的新名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Network Diagram Name")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _out_name { get; set; } = null;


        /// <summary>
        /// <para>Network Diagram Access Rights</para>
        /// <para><xdoc>
        ///   <para>Specifies the access right level of the input diagram.</para>
        ///   <bulletList>
        ///     <bullet_item>Public—Other users will have full access to the diagram; everyone can see, edit, update, and overwrite the diagram. However, no one except the diagram owner and the portal utility network owner—in the case of diagrams related to a utility network in an enterprise geodatabase—can use the Alter Diagram Properties tool to change the access right level. This is the default.</bullet_item><para/>
        ///     <bullet_item>Protected—Other users will have read-only access to the diagram. They cannot edit, update, or overwrite the diagram.</bullet_item><para/>
        ///     <bullet_item>Private— Other users will not have access to the diagram. The corresponding diagram item will be hidden from other users in the Find Diagrams pane.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定输入关系图的访问权限级别。</para>
        ///   <bulletList>
        ///     <bullet_item>公共 - 其他用户将具有对逻辑示意图的完全访问权限;每个人都可以查看、编辑、更新和覆盖图表。但是，除了逻辑示意图所有者和门户公共设施网络所有者（对于与企业级地理数据库中的公共设施网络相关的逻辑示意图）之外，任何人都不能使用更改逻辑示意图属性工具来更改访问权限级别。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>受保护 - 其他用户将具有对逻辑示意图的只读访问权限。他们无法编辑、更新或覆盖图表。</bullet_item><para/>
        ///     <bullet_item>私有 — 其他用户将无权访问逻辑示意图。相应的逻辑示意图项将在“查找逻辑示意图”窗格中对其他用户隐藏。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Network Diagram Access Rights")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _access_right_type_value _access_right_type { get; set; } = _access_right_type_value._PUBLIC;

        public enum _access_right_type_value
        {
            /// <summary>
            /// <para>Public</para>
            /// <para>Public—Other users will have full access to the diagram; everyone can see, edit, update, and overwrite the diagram. However, no one except the diagram owner and the portal utility network owner—in the case of diagrams related to a utility network in an enterprise geodatabase—can use the Alter Diagram Properties tool to change the access right level. This is the default.</para>
            /// <para>公共 - 其他用户将具有对逻辑示意图的完全访问权限;每个人都可以查看、编辑、更新和覆盖图表。但是，除了逻辑示意图所有者和门户公共设施网络所有者（对于与企业级地理数据库中的公共设施网络相关的逻辑示意图）之外，任何人都不能使用更改逻辑示意图属性工具来更改访问权限级别。这是默认设置。</para>
            /// </summary>
            [Description("Public")]
            [GPEnumValue("PUBLIC")]
            _PUBLIC,

            /// <summary>
            /// <para>Protected</para>
            /// <para>Protected—Other users will have read-only access to the diagram. They cannot edit, update, or overwrite the diagram.</para>
            /// <para>受保护 - 其他用户将具有对逻辑示意图的只读访问权限。他们无法编辑、更新或覆盖图表。</para>
            /// </summary>
            [Description("Protected")]
            [GPEnumValue("PROTECTED")]
            _PROTECTED,

            /// <summary>
            /// <para>Private</para>
            /// <para>Private— Other users will not have access to the diagram. The corresponding diagram item will be hidden from other users in the Find Diagrams pane.</para>
            /// <para>私有 — 其他用户将无权访问逻辑示意图。相应的逻辑示意图项将在“查找逻辑示意图”窗格中对其他用户隐藏。</para>
            /// </summary>
            [Description("Private")]
            [GPEnumValue("PRIVATE")]
            _PRIVATE,

        }

        /// <summary>
        /// <para>Tags (optional)</para>
        /// <para><xdoc>
        ///   <para>One or several tags that will help find the stored diagram. These tags can be used in the Find Diagrams pane.</para>
        ///   <para>To add several tags, use the number sign (#) to separate each tag. This also allows a more thorough and efficient diagram search.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>一个或多个有助于查找存储的图表的标记。这些标记可在“查找逻辑示意图”窗格中使用。</para>
        ///   <para>若要添加多个标签，请使用数字符号 （#） 分隔每个标签。这也允许更彻底、更高效的图表搜索。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Tags (optional)")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _tags { get; set; } = null;


        /// <summary>
        /// <para>Altered Network Diagram Layer</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Altered Network Diagram Layer")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_network_diagram_layer { get; set; }


        public AlterDiagramProperties SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}